質(zhì)量保證不足是破壞軟件公司聲譽(yù)的最快、最可靠的方法之一。隱藏在應(yīng)用程序源代碼中的微小錯(cuò)誤可能會(huì)導(dǎo)致巨大的經(jīng)濟(jì)損失。如果錯(cuò)誤足夠嚴(yán)重,公司可能永遠(yuǎn)無(wú)法恢復(fù)。備受矚目的軟件被入侵并導(dǎo)致大公司損失數(shù)百萬(wàn)美元的案例一直成為頭條新聞。由于 POS 系統(tǒng)故障,星巴克一度不得不暫時(shí)關(guān)閉一半以上的北美門店。由于安全氣囊傳感器故障被證明是軟件故障,日產(chǎn)曾經(jīng)不得不召回超過(guò) 100 萬(wàn)輛汽車。
對(duì)于一個(gè)價(jià)值數(shù)十億美元的全球組織而言,從重大軟件問題中恢復(fù)過(guò)來(lái)確實(shí)具有挑戰(zhàn)性。對(duì)于一家較小的公司來(lái)說(shuō),這可能只是一個(gè)難以應(yīng)對(duì)的挑戰(zhàn)。這就是為什么任何發(fā)布軟件的組織都需要非常熟悉軟件測(cè)試的原因。測(cè)試識(shí)別應(yīng)用程序代碼中的錯(cuò)誤、差距和缺失的需求。這使軟件開發(fā)團(tuán)隊(duì)能夠在發(fā)布之前修復(fù)錯(cuò)誤。測(cè)試軟件的兩種主要方法是白盒測(cè)試和黑盒測(cè)試。這些測(cè)試方法各有優(yōu)缺點(diǎn)。每一個(gè)都旨在解決特定問題,并提供對(duì)軟件問題原因的質(zhì)量保證洞察。
白盒測(cè)試
白盒測(cè)試也稱為結(jié)構(gòu)測(cè)試。一些開發(fā)人員將其稱為透明盒測(cè)試或玻璃盒測(cè)試。白盒測(cè)試技術(shù)側(cè)重于系統(tǒng)地檢查應(yīng)用程序的源代碼。開發(fā)人員可以自動(dòng)化白盒測(cè)試,以便在開發(fā)過(guò)程推進(jìn)之前有效地解決錯(cuò)誤的代碼行。
白盒測(cè)試的主要目的是驗(yàn)證應(yīng)用程序代碼的質(zhì)量。由于系統(tǒng)的內(nèi)部結(jié)構(gòu)是已知的,因此開發(fā)人員可以查明錯(cuò)誤的來(lái)源。例如,在正確配置的白盒測(cè)試中,相對(duì)容易找到定義不明確的變量或不準(zhǔn)確的調(diào)用函數(shù)。
白盒測(cè)試人員需要是一名軟件工程師,他徹底了解被測(cè)試應(yīng)用程序的預(yù)期結(jié)果。即使擁有一流的自動(dòng)化工具,它仍然可能是一個(gè)詳盡且耗時(shí)的體驗(yàn)。如果應(yīng)用程序的代碼庫(kù)快速更改,自動(dòng)化測(cè)試可能無(wú)法工作。
白盒測(cè)試技術(shù)的一個(gè)例子包括:
- 語(yǔ)句覆蓋率:這種測(cè)試技術(shù)驗(yàn)證每行代碼是否至少執(zhí)行一次。
- 分支覆蓋率:這種測(cè)試技術(shù)驗(yàn)證每個(gè)分支是否至少執(zhí)行一次。
- 路徑覆蓋:此測(cè)試技術(shù)檢查程序描述的所有路徑。
白盒測(cè)試的缺點(diǎn)之一是它暴露了代碼。外包測(cè)試的開發(fā)人員冒著代碼被盜的風(fēng)險(xiǎn)。開發(fā)人員應(yīng)該只信任具有長(zhǎng)期白盒測(cè)試記錄的知名專家。
黑盒測(cè)試
黑盒測(cè)試也稱為功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。這種方法的目的是檢查程序功能。進(jìn)行黑盒測(cè)試不需要編程知識(shí)。軟件酯是導(dǎo)航應(yīng)用程序界面的人類用戶。應(yīng)用程序通過(guò)或失敗的測(cè)試取決于其可用性,而不是其代碼的質(zhì)量。
由于黑盒測(cè)試人員不知道該程序是如何工作的,他們的擔(dān)憂反映了普通用戶的擔(dān)憂。這種測(cè)試方法基于反復(fù)試驗(yàn)。程序員可能無(wú)法預(yù)測(cè)黑盒測(cè)試人員可能選擇的特定路徑,這將導(dǎo)致錯(cuò)誤。然后,程序員將需要檢查代碼以找出失敗的原因。黑盒測(cè)試非常適合具有明確功能的大型代碼段。它非常適合外包測(cè)試,因?yàn)樗试S低技能測(cè)試人員完成有價(jià)值的工作。由于代碼沒有暴露,因此不存在知識(shí)產(chǎn)權(quán)被盜的風(fēng)險(xiǎn)。
有多種黑盒測(cè)試方法,其中大多數(shù)專注于測(cè)試輸入:
- 等價(jià)分區(qū)將大量潛在輸入減少到小的、有代表性的測(cè)試用例。它非常適合創(chuàng)建測(cè)試用例。
- 邊界值分析尋找產(chǎn)生錯(cuò)誤的極端輸入值。測(cè)試人員尋找輸入值的邊界并報(bào)告它們。
- 因果圖使用圖表來(lái)識(shí)別產(chǎn)生錯(cuò)誤的輸入值。它是多變量輸入類型的理想選擇。
何時(shí)使用白盒測(cè)試與黑盒測(cè)試
白盒測(cè)試不需要完整的用戶界面。當(dāng)程序員希望測(cè)試早期應(yīng)用程序構(gòu)建時(shí),這使得它更可取。它提供了一種快速、徹底的方法來(lái)測(cè)試程序中的每條路徑。這確保了代碼是好的——但不能保證它做用戶希望它做的事情。白盒測(cè)試不會(huì)將程序和測(cè)試環(huán)境分開。有時(shí)更新會(huì)破壞源代碼。這可能是對(duì)開發(fā)人員時(shí)間的額外壓力。
這使得白盒測(cè)試在開發(fā)過(guò)程中成為一個(gè)不錯(cuò)的選擇。當(dāng)需要驗(yàn)證程序的一小部分時(shí),白盒測(cè)試使其成為一項(xiàng)簡(jiǎn)單的內(nèi)部任務(wù)。隨著發(fā)布日期的臨近,白盒測(cè)試讓位于黑盒測(cè)試。黑盒測(cè)試最適合已完成的程序。在發(fā)布前測(cè)試程序的大型團(tuán)隊(duì)可以在最后一刻發(fā)現(xiàn)用戶體驗(yàn)問題。測(cè)試用例很容易制作,程序員可以快速響應(yīng)它們。
仔細(xì)組織黑盒測(cè)試場(chǎng)景很重要。測(cè)試結(jié)果可能難以重現(xiàn)。測(cè)試可能會(huì)變得多余。即使在最好的情況下,測(cè)試也很少涵蓋所有的軟件路徑。由于黑盒測(cè)試人員不需要非常熟練,程序員可以在發(fā)布日期臨近時(shí)擴(kuò)大測(cè)試規(guī)模。這為軟件公司提供了在發(fā)布強(qiáng)大的最終產(chǎn)品的同時(shí)增強(qiáng)最終用戶體驗(yàn)的最佳機(jī)會(huì)。
最終,每種類型的測(cè)試都最適合特定情況。測(cè)試工程師經(jīng)常結(jié)合使用白盒和黑盒測(cè)試來(lái)解決不同的錯(cuò)誤。而且,測(cè)試可能發(fā)生在開發(fā)周期的不同階段。無(wú)論您選擇運(yùn)行什么版本或組合,正確的測(cè)試過(guò)程對(duì)于軟件質(zhì)量保證都是至關(guān)重要的。所有這些測(cè)試現(xiàn)在可能感覺很多,但從長(zhǎng)遠(yuǎn)來(lái)看,它將為您節(jié)省時(shí)間和金錢。有一天,它可能會(huì)保護(hù)您的公司免受令人尷尬的公共事件的影響。